|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.neo4j.index.impl.GenericIndexService
org.neo4j.index.lucene.LuceneIndexService
public class LuceneIndexService
An implementation of IndexService which uses Lucene as backend.
Additional features to IndexService is:
enableCache(String, int) will enable a LRU cache for the
specific key and will boost performance in performance-critical areas.getNodes(String, Object, Sort) where you can pass in a
Sort option to control in which order Lucene returns the resultssetLazySearchResultThreshold(int) will control the threshold for
when a search result is considered big enough to be returned as a lazy
iteration, making getNodes(String, Object) return very fast, but
skips caching
| Field Summary | |
|---|---|
static int |
DEFAULT_LAZY_SEARCH_RESULT_THRESHOLD
The default value for getLazySearchResultThreshold() |
protected static String |
DIR_NAME
|
protected static String |
DOC_ID_KEY
|
protected static String |
DOC_INDEX_KEY
|
| Constructor Summary | |
|---|---|
LuceneIndexService(org.neo4j.graphdb.GraphDatabaseService graphDb)
|
|
| Method Summary | |
|---|---|
void |
enableCache(String key,
int maxNumberOfCachedEntries)
Enables an LRU cache for a specific index (specified by key) so
that the maxNumberOfCachedEntries number of results found with
getNodes(String, Object) are cached for faster consecutive
lookups. |
protected org.apache.lucene.search.Query |
formQuery(String key,
Object value,
Object matching)
|
protected Class<? extends LuceneDataSource> |
getDataSourceClass()
|
protected String |
getDirName()
|
Integer |
getEnabledCacheSize(String key)
Returns the enabled LRU cache size for key. |
int |
getLazySearchResultThreshold()
Returns the threshold for when a result is considered big enough to skip cache and be returned as a fully lazy iterator so that getNodes(String, Object) will return very fast and all the
reading and fetching of nodes is done lazily before each step in the
iteration of the returned result. |
IndexHits<org.neo4j.graphdb.Node> |
getNodes(String key,
Object value)
Returns all nodes indexed with key and value. |
protected IndexHits<org.neo4j.graphdb.Node> |
getNodes(String key,
Object value,
Object matching,
org.apache.lucene.search.Sort sortingOrNull)
Just like getNodes(String, Object), but with sorted result. |
IndexHits<org.neo4j.graphdb.Node> |
getNodes(String key,
Object value,
org.apache.lucene.search.Sort sortingOrNull)
Returns hits from the index (see getNodes(String, Object)). |
IndexHits<org.neo4j.graphdb.Node> |
getNodesExactMatch(String key,
Object value)
A method for calling getNodes(String, Object) using exact
matching. |
org.neo4j.graphdb.Node |
getSingleNode(String key,
Object value)
Returns a single node indexed with associated with key and
value. |
protected org.neo4j.graphdb.Node |
getSingleNode(String key,
Object value,
Object matching)
|
org.neo4j.graphdb.Node |
getSingleNodeExactMatch(String key,
Object value)
A method for calling getSingleNode(String, Object) using exact
matching. |
protected byte[] |
getXaResourceId()
|
void |
index(org.neo4j.graphdb.Node node,
String key,
Object value)
Index node with key and value. |
protected void |
indexThisTx(org.neo4j.graphdb.Node node,
String key,
Object value)
|
protected Iterator<org.neo4j.graphdb.Node> |
instantiateIdToNodeIterator(Iterator<Long> ids)
|
void |
removeIndex(org.neo4j.graphdb.Node node,
String key)
Dissociates a node from all indexed values for the given key. |
void |
removeIndex(String key)
Dissociates all key-value pairs which key is part of, i.e. |
protected void |
removeIndexThisTx(org.neo4j.graphdb.Node node,
String key,
Object value)
|
void |
setLazySearchResultThreshold(int numberOfHitsBeforeLazyLoading)
Sets the threshold for when a result is considered big enough to skip cache and be returned as a fully lazy iterator so that getNodes(String, Object) will return very fast and all the
reading and fetching of nodes is done lazily before each step in the
iteration of the returned result. |
void |
shutdown()
Shuts down the index service. |
| Methods inherited from class org.neo4j.index.impl.GenericIndexService |
|---|
beginTx, getGraphDb, removeIndex |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int DEFAULT_LAZY_SEARCH_RESULT_THRESHOLD
getLazySearchResultThreshold()
protected static final String DOC_ID_KEY
protected static final String DOC_INDEX_KEY
protected static final String DIR_NAME
| Constructor Detail |
|---|
public LuceneIndexService(org.neo4j.graphdb.GraphDatabaseService graphDb)
graphDb - the GraphDatabaseService to use.| Method Detail |
|---|
protected Class<? extends LuceneDataSource> getDataSourceClass()
protected String getDirName()
protected byte[] getXaResourceId()
public void enableCache(String key,
int maxNumberOfCachedEntries)
key) so
that the maxNumberOfCachedEntries number of results found with
getNodes(String, Object) are cached for faster consecutive
lookups. It's preferred to enable cache at construction time.
key - the index to enable cache for.maxNumberOfCachedEntries - the max size of the cache before old ones
are flushed from the cache.public Integer getEnabledCacheSize(String key)
key. Cache is enabled
using enableCache(String, int). If cache hasn't been enabled
for key then null is returned.
key - the key to get the enabled cache size for.
key or null if not
enabled for that key.public void setLazySearchResultThreshold(int numberOfHitsBeforeLazyLoading)
getNodes(String, Object) will return very fast and all the
reading and fetching of nodes is done lazily before each step in the
iteration of the returned result. The default value is
DEFAULT_LAZY_SEARCH_RESULT_THRESHOLD.
numberOfHitsBeforeLazyLoading - the threshold where results which
are bigger than that threshold becomes lazy.public int getLazySearchResultThreshold()
getNodes(String, Object) will return very fast and all the
reading and fetching of nodes is done lazily before each step in the
iteration of the returned result. The default value is
DEFAULT_LAZY_SEARCH_RESULT_THRESHOLD.
public void index(org.neo4j.graphdb.Node node,
String key,
Object value)
node with key and value. A
node can be associated with any number of key-value pairs.
Note about updating an index: If you've indexed a value from a property
on a Node and that value gets updated, you'll have to remove the
old value in addition to indexing the new value, else both values (the
new and the old) will be indexed for that node.
When deleting a Node, application should remove the index entries
for the node as well, to keep the index consistent with the node space.
Note that this implementation will cast objects given as the value to
String.
index in interface IndexServiceindex in class org.neo4j.index.impl.GenericIndexServicenode - node to indexkey - the key in the key-value pair to associate with node.value - the value in the key-value pair to associate with node.
protected void indexThisTx(org.neo4j.graphdb.Node node,
String key,
Object value)
indexThisTx in class org.neo4j.index.impl.GenericIndexService
public IndexHits<org.neo4j.graphdb.Node> getNodes(String key,
Object value)
key and value.
Note that this implementation will cast objects given as the value to
String.
key - the key for indexvalue - the value for index
public IndexHits<org.neo4j.graphdb.Node> getNodes(String key,
Object value,
org.apache.lucene.search.Sort sortingOrNull)
getNodes(String, Object)).
The result is sorted using sortingOrNull.
key - the index to search in.value - the value to match hits for.sortingOrNull - how the result should be sorted.
public IndexHits<org.neo4j.graphdb.Node> getNodesExactMatch(String key,
Object value)
getNodes(String, Object) using exact
matching. For this class it's equivalent to calling
getNodes(String, Object), but for subclasses, such as
LuceneFulltextIndexService it is useful for it to be able to
do queries with exact matching, even though it's a fulltext index.
key - the index to search in.value - the value to match hits for.
protected IndexHits<org.neo4j.graphdb.Node> getNodes(String key,
Object value,
Object matching,
org.apache.lucene.search.Sort sortingOrNull)
getNodes(String, Object), but with sorted result.
key - the index to query.value - the value to query for.sortingOrNull - lucene sorting behaviour for the result. Ignored if
null.
sortingOrNull.protected Iterator<org.neo4j.graphdb.Node> instantiateIdToNodeIterator(Iterator<Long> ids)
protected org.apache.lucene.search.Query formQuery(String key,
Object value,
Object matching)
key - the keyvalue - the valuematching - an object describing what kind of matching to do.
The type this object is is solely up to the implementation.
Query formed from key/value.
public org.neo4j.graphdb.Node getSingleNodeExactMatch(String key,
Object value)
getSingleNode(String, Object) using exact
matching. For this class it's equivalent to calling
getSingleNode(String, Object), but for subclasses, such as
LuceneFulltextIndexService it is useful for it to be able to
do queries with exact matching, even though it's a fulltext index.
key - the index to search in.value - the value to match hits for.
null if no hit found.
If more than one hit was found a RuntimeException is thrown.
public org.neo4j.graphdb.Node getSingleNode(String key,
Object value)
IndexServicekey and
value. If no such node exist null is returned.
If more then one node is found a runtime exception is thrown.
key - the key for indexvalue - the value for index
null
protected org.neo4j.graphdb.Node getSingleNode(String key,
Object value,
Object matching)
protected void removeIndexThisTx(org.neo4j.graphdb.Node node,
String key,
Object value)
removeIndexThisTx in class org.neo4j.index.impl.GenericIndexServicepublic void shutdown()
IndexService
shutdown in interface IndexServiceshutdown in class org.neo4j.index.impl.GenericIndexService
public void removeIndex(org.neo4j.graphdb.Node node,
String key)
IndexServicekey.
If no such association exists this method silently returns.
Implementations may choose to not implement this method and should
in such a case throw UnsupportedOperationException.
node - the node to dissociate from all indexed values for the given
key.key - the key in the key-value pairs to remove.public void removeIndex(String key)
IndexServicekey is part of, i.e.
clearing the an entire index key is cleared.
Implementations may choose to not implement this method and should
in such a case throw UnsupportedOperationException.
key - the index to clear.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||